package ctr.stage;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JOptionPane;

import jdbc.Connexion;
import metier.Eleve;
import metier.Stage;
import metier.jdbc.StageJdbc;
import vue.MenuControle;
import vue.stage.JPanSuppStage;
import configuration.MessageAppli;

public class GestSuppStage implements ActionListener{

	private JPanSuppStage jPanSuppStage;
	
	/**
	 * Constructeur permettant d'avoir accès au jPan pour acceder à la comboBox.
	 * @param jPanSuppStage
	 */
	public GestSuppStage(JPanSuppStage jPanSuppStage) {
		this.jPanSuppStage = jPanSuppStage;
	}

	@Override
	public void actionPerformed(ActionEvent actionEvent) {
		if (actionEvent.getSource() instanceof JButton) {
			try {
				if ( jPanSuppStage.getjComboBox().getSelectedItem() != null ){
					// On recupere le stage séléctionné.
					Stage stage = (Stage) jPanSuppStage.getjComboBox().getSelectedItem(); 
					
					// On recupere les Eleves du stage pour verifier que le stage est bien vide.
					ArrayList<Eleve> lEleve = StageJdbc.rechercherListeStageEleve(Connexion.getConnexion(), stage);
					if ( lEleve != null && !lEleve.isEmpty()){
						throw new Exception(MessageAppli.MSG_STAGE_PAS_VIDE);
					}else{
						// Suppression du stage si tous ok.
						if ( StageJdbc.suppressionStage(Connexion.getConnexion(), stage) ){
							// Message de confirmation.
							JOptionPane.showMessageDialog(jPanSuppStage, MessageAppli.MSG_STAGE_SUPP_OK,
									MessageAppli.MSG_TITRE_INFO, JOptionPane.INFORMATION_MESSAGE);
						}else{
							throw new Exception(MessageAppli.MSG_STAGE_SUPP_KO);
						}
					}
					MenuControle.afficherPan(new JPanSuppStage("Suppression d'un stage"));
				}else{
					throw new Exception(MessageAppli.MSG_STAGE_AUCUN_STAGE);
				}
			} catch (Exception e) {
				e.printStackTrace();
				JOptionPane.showMessageDialog(jPanSuppStage, e.getMessage(),
						MessageAppli.MSG_TITRE_INFO, JOptionPane.WARNING_MESSAGE);
			}
		}
	}
}